{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# XGBoost Parameter Tuning for Otto Dataset"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "独立调用xgboost或在sklearn框架下调用均可。\n",
    "1. 模型训练：超参数调优\n",
    "a) 初步确定弱学习器数目： 20分\n",
    "b) 对树的最大深度（可选）和min_children_weight进行调优（可选）：20分\n",
    "c) 对正则参数进行调优：20分\n",
    "d) 重新调整弱学习器数目：10分\n",
    "e) 行列重采样参数调整：10分\n",
    "2. 调用模型进行测试10分\n",
    "3. 生成测试结果文件10分"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 1. 直接调用xgboost内嵌的cv寻找最佳的参数n_estimators"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "首先 import 必要的模块"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from xgboost import XGBClassifier\n",
    "import xgboost as xgb\n",
    "\n",
    "import pandas as pd \n",
    "import numpy as np\n",
    "\n",
    "from sklearn.model_selection import GridSearchCV\n",
    "from sklearn.model_selection import StratifiedKFold\n",
    "\n",
    "from sklearn.metrics import log_loss\n",
    "\n",
    "from matplotlib import pyplot\n",
    "import seaborn as sns\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 读取数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": true,
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "#读入数据\n",
    "train = pd.read_csv(\"RentListingInquries_FE_train.csv\")\n",
    "test = pd.read_csv(\"RentListingInquries_FE_test.csv\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>bathrooms</th>\n",
       "      <th>bedrooms</th>\n",
       "      <th>price</th>\n",
       "      <th>price_bathrooms</th>\n",
       "      <th>price_bedrooms</th>\n",
       "      <th>room_diff</th>\n",
       "      <th>room_num</th>\n",
       "      <th>Year</th>\n",
       "      <th>Month</th>\n",
       "      <th>Day</th>\n",
       "      <th>...</th>\n",
       "      <th>walk</th>\n",
       "      <th>walls</th>\n",
       "      <th>war</th>\n",
       "      <th>washer</th>\n",
       "      <th>water</th>\n",
       "      <th>wheelchair</th>\n",
       "      <th>wifi</th>\n",
       "      <th>windows</th>\n",
       "      <th>work</th>\n",
       "      <th>interest_level</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1.5</td>\n",
       "      <td>3</td>\n",
       "      <td>3000</td>\n",
       "      <td>1200.0</td>\n",
       "      <td>750.000000</td>\n",
       "      <td>-1.5</td>\n",
       "      <td>4.5</td>\n",
       "      <td>2016</td>\n",
       "      <td>6</td>\n",
       "      <td>24</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1.0</td>\n",
       "      <td>2</td>\n",
       "      <td>5465</td>\n",
       "      <td>2732.5</td>\n",
       "      <td>1821.666667</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>2016</td>\n",
       "      <td>6</td>\n",
       "      <td>12</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1.0</td>\n",
       "      <td>1</td>\n",
       "      <td>2850</td>\n",
       "      <td>1425.0</td>\n",
       "      <td>1425.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2016</td>\n",
       "      <td>4</td>\n",
       "      <td>17</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1.0</td>\n",
       "      <td>1</td>\n",
       "      <td>3275</td>\n",
       "      <td>1637.5</td>\n",
       "      <td>1637.500000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2016</td>\n",
       "      <td>4</td>\n",
       "      <td>18</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1.0</td>\n",
       "      <td>4</td>\n",
       "      <td>3350</td>\n",
       "      <td>1675.0</td>\n",
       "      <td>670.000000</td>\n",
       "      <td>-3.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>2016</td>\n",
       "      <td>4</td>\n",
       "      <td>28</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 228 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   bathrooms  bedrooms  price  price_bathrooms  price_bedrooms  room_diff  \\\n",
       "0        1.5         3   3000           1200.0      750.000000       -1.5   \n",
       "1        1.0         2   5465           2732.5     1821.666667       -1.0   \n",
       "2        1.0         1   2850           1425.0     1425.000000        0.0   \n",
       "3        1.0         1   3275           1637.5     1637.500000        0.0   \n",
       "4        1.0         4   3350           1675.0      670.000000       -3.0   \n",
       "\n",
       "   room_num  Year  Month  Day       ...        walk  walls  war  washer  \\\n",
       "0       4.5  2016      6   24       ...           0      0    0       0   \n",
       "1       3.0  2016      6   12       ...           0      0    0       0   \n",
       "2       2.0  2016      4   17       ...           0      0    0       0   \n",
       "3       2.0  2016      4   18       ...           0      0    0       0   \n",
       "4       5.0  2016      4   28       ...           0      0    1       0   \n",
       "\n",
       "   water  wheelchair  wifi  windows  work  interest_level  \n",
       "0      0           0     0        0     0               1  \n",
       "1      0           0     0        0     0               2  \n",
       "2      0           0     0        0     0               0  \n",
       "3      0           0     0        0     0               2  \n",
       "4      0           0     0        0     0               2  \n",
       "\n",
       "[5 rows x 228 columns]"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([1, 2, 0])"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train['interest_level'].unique()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Variable Identification"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "选择该数据集是因为的数据特征单一，我们可以在特征工程方面少做些工作，集中精力放在参数调优上"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "y_train = train['interest_level']\n",
    "train = train.drop([\"interest_level\"], axis=1)\n",
    "X_train = np.array(train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "kfold = StratifiedKFold(n_splits=5, shuffle=True, random_state=3)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "默认参数，此时学习率为0.1，比较大，观察弱分类数目的大致范围\n",
    "（采用默认参数配置，看看模型是过拟合还是欠拟合）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "#直接调用xgboost内嵌的交叉验证（cv），可对连续的n_estimators参数进行快速交叉验证\n",
    "#而GridSearchCV只能对有限个参数进行交叉验证\n",
    "def modelfit(alg, X_train, y_train, cv_folds=None, early_stopping_rounds=10):\n",
    "    xgb_param = alg.get_xgb_params()\n",
    "    xgb_param['num_class'] = 3\n",
    "    \n",
    "    #直接调用xgboost，而非sklarn的wrapper类\n",
    "    xgtrain = xgb.DMatrix(X_train, label = y_train)\n",
    "        \n",
    "    cvresult = xgb.cv(xgb_param, xgtrain, num_boost_round=alg.get_params()['n_estimators'], folds =cv_folds,\n",
    "             metrics='mlogloss', early_stopping_rounds=early_stopping_rounds)\n",
    "  \n",
    "    cvresult.to_csv('1_nestimators.csv', index_label = 'n_estimators')\n",
    "    \n",
    "    #最佳参数n_estimators\n",
    "    n_estimators = cvresult.shape[0]\n",
    "    \n",
    "    # 采用交叉验证得到的最佳参数n_estimators，训练模型\n",
    "    alg.set_params(n_estimators = n_estimators)\n",
    "    alg.fit(X_train, y_train, eval_metric='mlogloss')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "collapsed": true,
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "xgb1 = XGBClassifier(\n",
    "        learning_rate =0.1,\n",
    "        n_estimators=1000,  \n",
    "        max_depth=5,\n",
    "        min_child_weight=1,\n",
    "        gamma=0,\n",
    "        subsample=0.3,\n",
    "        colsample_bytree=0.8,\n",
    "        colsample_bylevel=0.7,\n",
    "        objective= 'multi:softprob',\n",
    "        seed=3)\n",
    "\n",
    "modelfit(xgb1, X_train, y_train, cv_folds = kfold)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fb27a8ea0b8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "cvresult = pd.DataFrame.from_csv('1_nestimators.csv')\n",
    "        \n",
    "# plot\n",
    "test_means = cvresult['test-mlogloss-mean']\n",
    "test_stds = cvresult['test-mlogloss-std'] \n",
    "        \n",
    "train_means = cvresult['train-mlogloss-mean']\n",
    "train_stds = cvresult['train-mlogloss-std'] \n",
    "\n",
    "x_axis = range(0, cvresult.shape[0])\n",
    "        \n",
    "pyplot.errorbar(x_axis, test_means, yerr=test_stds ,label='Test')\n",
    "pyplot.errorbar(x_axis, train_means, yerr=train_stds ,label='Train')\n",
    "pyplot.title(\"XGBoost n_estimators vs Log Loss\")\n",
    "pyplot.xlabel( 'n_estimators' )\n",
    "pyplot.ylabel( 'Log Loss' )\n",
    "pyplot.savefig( 'n_estimators4_1.png' )\n",
    "\n",
    "pyplot.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA1oAAANGCAYAAADktv9+AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAAPYQAAD2EBqD+naQAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAIABJREFUeJzs3XeYFFXWx/HfmSEjQZIEQRRRZE2A\nICgqoKiYdd1VXF3zrrprWHVNa8Cc06uy5ryia14DKgYEAVEJKoKCSJCcM8PAcN8/qqaqpp0ZZoae\nrg7fz/P0471d1dWnu8ehz9x7zzXnnAAAAAAAyZMXdwAAAAAAkG1ItAAAAAAgyUi0AAAAACDJSLQA\nAAAAIMlItAAAAAAgyUi0AAAAACDJSLQAAAAAIMlItAAAAAAgyUi0AAAAACDJSLQA5Awze9rMNpjZ\nHqUcu8rMnJkdnXB/Q//YWDNbYWYbzWyhmX1gZqeYWe3Iue39a0Rvq8zsWzO7xMzyU/E6y2NmF5jZ\nGXHHsTXMrJ6ZDTKzPqUcO8N/39vHEFdrP669U/3ccTKzZ81sTdxxSJL//jszaxZ3LABAogUgl1wi\naYGk58ysZvGdfuJ1o6RnnXPvRO7vKGmCpH9J+kLSnyX1k3ShpLmSnpZ0bSnP85CkXv7tj5JGSbpf\n0l3Jf0mVdoGkM+IOYivVk3SDpD6lHHtP3vs+P5UB+VrLiyunEi0AQOlqxB0AAKSKc26VmZ0t6SN5\nCdINfsL1gqSF8hIxSZKZ1ZD0lqQmkno456YkXO6/ZnaTpC6lPNVs59yXkf4HZra7pIGSLkvaC8Jv\nOOcWS1ocdxzJZGb1nHPr4o4DAFA5jGgByCnOuY8lPSrpGjPrJmmQpL0kne2cWxk59XhJnSXdWkqS\nVXytWc65tyr41CslbYzeYWZ5ZnaFmf3oT2lcZGbPm9n2iQ82s7P8KYgFZrbMzN40s90SztnJzF42\ns3n+9Raa2SfFU9nMbKak30k6KDK1cWZ5QfvnPGxmp5nZFDNb58dxVAVfd/Ratczs2sjrXWxmz5hZ\n84Tz+pnZcDNbambrzWy2mb3uTxlsrzCRuiHyOp71H/ubqYP+tSaZWS8zG+1fc6aZnekfP9LMxvuv\n7XszOzwhnp39OKf558w1s3eiU1D9aYxf+91nInENipxzjJmN8a+x2syGmVmvhOcqnvrW1cxeM7Pl\nkqb7x8r9fMt4zy/xr7dzKcfuNLPC4ml2ZtbFzN71fw43+M/zXmk/j1VhZr39eFf778FoMzuyjPPG\n+D/rc83sZjM7J/Fz3cpYdjezt81suf88E83s9IRz8vyf15/8n5kVZvadmV0cOae5mT1uZr9GfqZH\nmdkhyYgTQGZjRAtALvqnpMMkvSapraRHnXPDEs7p7//3f1W4fp55I2KS1EjSsZIOl3Rnwnn/lvQX\nSQ9LeldSe0k3S+pjZl2dc0skycyulnSbpCGSrpbUVF6COMbMujvnpvnXe19SvqQrJM2W1EzSfpIa\n+8eP91/zSnlTCCVpQwVez5GSuku6XtIa//pvmtmuzrlfKvB4mVmepLclHSBvCuVoSTvIm7I53Mz2\ncc6t979IvydppKSzJK2Q1Ebe+1dL3pTAwyV9IOkpSU/6T7GlUayWkp7xn3uOvOmfT5tZW0knynt/\nV/qv8S0z28k5N89/bGtJSyVd5T9PE0mnSxprZl2ccz9JGi/pTP85bvFfg/znkpmdIuk/8kZTB0qq\n7b+Pw83sYOfcFwnxviHpZXl/FKjv37elz7c0L8r7uTtDkWmu5q0XPFXSO865JWZWX9IwSTMk/U3e\nCG9LSX0lNSjn+hViZgf51/9O0tnyfu4ukPSOmQ10zr3in7enf95Uee/xOknn+bEmhZntKu/nb5Gk\ni+R9tqdKetbMtnPOFU/xvULe/2e3SBohqaakTir5fr8gqau86cVT/WNd5f0/CiDXOee4cePGLedu\n8r7sOnlf3Lcp5fhQ/3jthPtN3h+pim/5kWPt/ceUdnsm4dxO/v2PJFy/h3//rX6/sbwvm+8lnNdW\nUoGk//j9pv7jLt7C654kaXgl3icnb11bg8h920kqknRVJa5zsn+tExLu38e//3y//3u/v1c512rm\nnzOolGNn+MfaR+4b7t/XLXJfE0mb/Pe2deT+vfxzLyzn+fPlfemeKum+Ul7LGQnn58lb0/edpLzI\n/dvIS2hGRe4b5F/jxoRrVOjzLSPe1yX9mvDcA/zrHeX3u/n9Y6tw/WclrdnCOWP817pN5L58Sd/7\nsZl/33/lJfPNEt6/HxI/1zKep/j9a1bOOUP8/3faJtz/vqS1khr5/XckTdjC862WdH9l3zNu3Ljl\nxo2pgwByjj+6cqGkzZJayPtyXVEXy5sCWHz7tpRzHpQ3AtRd3ojANfKKYgyJnNPX/++z0Qc6576S\nNEXSwf5dvSTVLeW8XyV9GjlvmbwpZv80s0v9aWDJ+h3/mXNudeS5F8obDdihEtc4St7o1DtmVqP4\nJmmivESuj3/eREmFkh43s9PNbKdkvABJ851z44o7zrll8l7DRBeOXEneey9FXpsf6zVmNtnMCuUl\naIWSOkoqMX2zDLvKGxV7wTm3ORLDGnlJUE8zq5fwmNcT+lvz+T4jaXtJ0elsZ8p734f6/Z8lLZd0\np5mdZ2adK3jtLfJHy/aV9Jr/miVJzrkieSNC28t7jyTpIEmfOn801z9vs7wELFn6SfrE/38o6ll5\nhVaKp3N+JWkvMxtsZoeZWcNSrvWVpDP8KYY9LVJkBwBItADkosvlfZk6RdI0eVPI6iacM9v/b2Iy\n8ZLCJGp8Gdef45z7xr8Nd87dLm9K4B/M7DD/nOKpRaVVx5sXOV6h85xzTl7S9aG8KU/jJS02s/8z\ns62d+rW0lPs2yEsAK2o7eaNzhSqZqG6UN0WtmSQ556bLSwgWSXpE0nQzmx5dF1NFy0q5rzDxfudc\nod+sE7n7Pnmf31uSjpaXNHSXl2RX5D3Y0meYJ2nbhPtLnLuVn+9Q/3rFa9K2lXSMpOf9ZEfOW594\nkLxE9zZJP/hrtG5MQvKwrbyR4LJev1Ty531hKeeVdl9VNa1gLLfL+13RU957uNRfY7ZP5DEnSXpO\n0jnyRu2WmbfOsmUS4wWQoUi0AOQU/y/1N8n7kvmKvKlmO0u6NeHU4jVbx0TvdM4tKk6i5E0bqqjv\n/P8Wj54VJy+tSjm3taQllTxPzivOcbZzrqW8EYL75a2DubsScVaXJfJeS/cybsVrxuScG+mcO1re\n+rae8r7APmBmJ6c6aN+p8n5ernHOfeic+8r//Cu6V9OWPsPN8kaTolziiVX9fCMjR8eZWWN5f2Co\nLW+kK3re9865k+UlGntLekXemrWtrZS5XN5rLOv1SyV/3rcr5bxkJi5LKxKLc26Tc+4+51xXeVNN\nB8qbsvth8Qikc26Jc+4S51x7eX+UuVrSCUoYgQaQm0i0AOQMf6rac/K+SF0sSc4rw36fpIvNbP/I\n6W9KmiyvOmGnJDx9cWW4Rf5/P/X/W2KRv5l1lzcd7RP/rjGS1pdy3vbyp0CV9mTOuanOuVvkrYHp\nGjlU2ZGoZHlX3hf4/MhoX/T2U+IDnHNFzrmx8oozSOHrKC7gkarX4ZRQNMSvltcm4byy4vpJ3hqt\nU8zMIteoL29N2hhXyfLt5Xy+ZXlG3ijdQHl/XBjjnPuxjGs759y3zrl/yJvuWZHrlxfrWkljJZ0Q\nHTn2pz6eKq9gyFT/7s8l9bPIhsP+eX/YmhgSfOI/R+uE+/8sb83el4kPcM6tcM69Jm+UtYm89ZiJ\n58x2zj0s7480W/WeAcgOVB0EkEuullewYIBzbkXk/uvkTQl72sz2ds6td84Vmdlx8qZqfWVmT8gr\nqrBc3hS4feWNTpVW+r2dmfX02/XlTVO8WtIsedXk5Jz7ycwel3ShmW2WNzWpvbwpar/KG62Qc26F\nmd0s6TYze17eOq+m8jbGLZBXta+4WtvDkl6VNx2yUF4itqekOyKxfS/pZDM7SdIvkgqcc99X5k2s\nopcl/UnS+2b2oLy1LRvlrc/pK+lt59ybZnaeH/d78qZv1pFXfVCSPpYk59xqM5sl6Vgz+0Te9L8l\nzrmZ1RT7u/LW4fwob2Sym7zKlXMSzpsuLyn+k5lNkVfUYZ5zbp6ZXSGv6uC7ZvaYvBGlf8r7Wbpq\nSwFU4vMtlXPuRzMbI+/nsK28apfR6x8lb3TsLXk/FyZvZKaxwtHd8uSb2Yml3L/WOTfUf95hkj4z\ns3v8+C+QtLukgf7USMkbWT5a0idmdqu89/M8hZUXN6tijjaz34w4+8nSjfLWDH5m3l54y+T9bB4p\n6Qp/GqXM7B15xWO+kVdtcgd5e+3NkjTNzBpJ+kzedOIf5Y1wd5dXFfONCsYJIJvFXY2DGzdu3FJx\nk5cUFUp6vIzjPeVV0rsv4f6G8r4kfqVwL6yF8sp0XyCpXuTc9vpttcH18kY07pfUMuHaefLW2/zk\nx7ZYfnGAUuI7W96aoA3yRhnektQ5cryFvFGL4i/4q/3zL1HJaoc7yEseV/nxzdzC++YkPVzK/TMl\nPVvJz6CGvGloE/33ZbUf76OSdo58Dm/41y+QN/o4XNLRCdc6WN46pQI/xmf9+89Q6VUHJ5XxGt7d\n0muWl2w86X/ua+WVnu/tX3d4wmNP9l9ToRIqI8or8/+l/9rXyEsc90t4/CCVUjWvop/vFt7/c/1r\nr5PUMOHYrvIShp/94yvkjUKdXoHrPquyq23OjJzXW95o0hr/OcbIr3qYcL3e/vtUIG8t1V3y/j9x\n8isClhPLoHJicZHzdpe3dcMKef9PTdRvq0VeKmmUvP8vN8hLsJ6UtIN/vLa8LRq+lfe7YZ28hGuQ\n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\nVamqpoFpuo0nfgJ8FLgZeAE4aq52h+gcYKqqbgZIshRYMVTnQP1vA94+VHY2MF1V+0d1WFW7gBuB\nG1uS9Yskx1bVzv9uCJKkPjmjJUlaLO6ku1bqp0nem2RFkrOTfKXtLHh024nv3CQnJnkb3aYYj7X2\nM8DSJKuTHJ/kZT3G9gfg/CQr2y6I1/Ofr7EzwDuSvCbJ8a3sW8DqJOuSnJLkEuBSRm/UQZLLk1yU\n5LQkpwAfBrYDB/qcMEnSBJhoSZIWhbbpwxrgHuBHdLNWN9DNHO0A9gPH0e0WOE23m9/PgS+29vcB\n36ebBXqabrfDvlwO/IVud8Nb6XYd3DpUZ32L9cnW/+wSwAuBi+h2FfwysL6qpsb0twe4ku7arQfa\n/a6pqn8c8kgkSb1I97olSZIkSeqLM1qSJEmS1DMTLUnSYSHJRwa3bR86Hp10fJIkHQyXDkqSDgtJ\nXgG8co7T+6rKD+WVJC0aJlqSJEmS1DOXDkqSJElSz0y0JEmSJKlnJlqSJEmS1DMTLUmSJEnqmYmW\nJEmSJPXMREuSJEmSemaiJUmSJEk9+ycSN9Mk77TwkQAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fb27a9d1390>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "cvresult = pd.DataFrame.from_csv('1_nestimators.csv')\n",
    "\n",
    "cvresult = cvresult.iloc[50:]\n",
    "# plot\n",
    "test_means = cvresult['test-mlogloss-mean']\n",
    "test_stds = cvresult['test-mlogloss-std'] \n",
    "        \n",
    "train_means = cvresult['train-mlogloss-mean']\n",
    "train_stds = cvresult['train-mlogloss-std'] \n",
    "\n",
    "x_axis = range(50,cvresult.shape[0]+50)\n",
    "        \n",
    "fig = pyplot.figure(figsize=(10, 10), dpi=100)\n",
    "pyplot.errorbar(x_axis, test_means, yerr=test_stds ,label='Test')\n",
    "pyplot.errorbar(x_axis, train_means, yerr=train_stds ,label='Train')\n",
    "pyplot.title(\"XGBoost n_estimators vs Log Loss\")\n",
    "pyplot.xlabel( 'n_estimators' )\n",
    "pyplot.ylabel( 'Log Loss' )\n",
    "pyplot.savefig( 'n_estimators_detail.png' )\n",
    "\n",
    "pyplot.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
